package bitclub;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PVideojuego;

/**
 * @author José Manuel Domínguez Carvajal
 * @fecha 13/09/2011
 * @version 1.0
 */
public class Videojuego extends Articulo {

    private String plataforma;
    private String productora;

    public Videojuego(int id, String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible, String plataforma, String productora) {
        super(id, titulo, genero, ano, clasificacionEdad, activo, fechaAlta, fechaBaja, proveedor, tarifa, vecesAlquilada, disponible);
        this.plataforma = plataforma;
        this.productora = productora;
    }

    public Videojuego(String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible, String plataforma, String productora) {
        this(-1, titulo, genero, ano, clasificacionEdad, activo, fechaAlta, fechaBaja, proveedor, tarifa, vecesAlquilada, disponible, plataforma, productora);
    }

    public String getPlataforma() {
        return plataforma;
    }

    public void setPlataforma(String plataforma) {
        this.plataforma = plataforma;
    }

    public String getProductora() {
        return productora;
    }

    public void setProductora(String productora) {
        this.productora = productora;
    }

    @Override
    public String toString() {

        // Presentación de resultados booleanos true and false mejorado
        String respuesta = "";


        if (this.isDisponible() == true) {
            respuesta = "DISPONIBLE";
        }
        if (this.isDisponible() == false) {
            respuesta = "NO DISPONIBLE";
        }

        // En esta variable vamos a concatenar todos los atributos de nuestro Videojuego
        String resultado = "";

        resultado += "----- ----- ----- ----- ----- ----- ----- ----- ----- ----- \n";

        resultado += "           TITULO: " + this.getTitulo() + "\n\n";

        if (this.getId() != -1) {
            resultado += "ID: " + this.getId() + "\n";
        }

        resultado += "Genero: " + this.getGenero() + "\n";
        resultado += "Año: " + this.getAno() + "\n";
        resultado += "Clasificación: " + this.getClasificacionEdad() + "\n";
        resultado += "Plataforma: " + this.getPlataforma() + "\n";
        resultado += "Productora: " + this.getPlataforma() + "\n";
        resultado += "Tarifa: " + this.getTarifa() + "\n";

        Proveedor p = this.getProveedor();
        resultado += "Proveedor: " + p.getNombre() + " " + p.getApellidos() + " " + p.getNombredeEmpresa() + "\n";

        resultado += "Fecha Alta: " + BitUtil.muestraFecha(this.getFechaAlta()) + "\n";

        if (this.isActivo() == false) {
            resultado += "Fecha Baja: " + BitUtil.muestraFecha(this.getFechaBaja()) + "\n";
        }

        resultado += "¿ Esta Disponible ?: " + respuesta + "\n";
        resultado += "Número Veces Alquilada: " + this.getVecesAlquilada() + "\n";

        return resultado;

    }

    /**
     * Crea un nuevo registro en BD con el objeto Articulo que lo usa
     */
    @Override
    public void nuevo() {
        PVideojuego.nuevoBD(this);
    }
    
    /**
     * Actualiza los datos en la base de datos del objeto que lo usa
     */
    @Override
    public void actualizar() {
        PVideojuego.actualizarBD(this);
    }

    
    public static List<Videojuego> seleccionarPorMasAlquilados(){
        List<Videojuego> listVideojuego = new ArrayList ();
        //Pedimos los artículos más alquilados a la capa de persistencia
        listVideojuego=PVideojuego.seleccionarPorMasAlquiladosBD();
        return listVideojuego;
    }
    
    public static List<Videojuego> seleccionarPorMenosAlquilados(){
        List<Videojuego> listVideojuego = new ArrayList ();
        //Pedimos los artículos más alquilados a la capa de persistencia
        listVideojuego=PVideojuego.seleccionarPorMenosAlquiladosBD();
        return listVideojuego;
    }
    
    public static Videojuego seleccionarPorCodigo(int codigo){
       Videojuego pelicula;
       //Pedimos la película que tenga el código solicitado
       pelicula =PVideojuego.seleccionarPorCodigoBD(codigo);
       return pelicula;
    }
    
    public static List<Videojuego> seleccionarPorTitulo(String titulo){
       List<Videojuego> listVideojuego=new ArrayList();
      //Pedimos los artículos que tengan cierta palabra en el título
      listVideojuego = PVideojuego.seleccionarPorTituloBD(titulo);
      return listVideojuego;
    }
    
    public static List<Videojuego> seleccionarPorGenero(String genero){
       List<Videojuego> listVideojuego=new ArrayList();
       //Pedimos los artículos que pertenezcan a cierto género
       listVideojuego = PVideojuego.seleccionarPorGeneroBD(genero); 
      return listVideojuego;
    }
    
    public static List<Videojuego> seleccionarPorAno(int ano){
       List<Videojuego> listVideojuego=new ArrayList();
       //Pedimos los artículos que pertenezcan a cierto año
       listVideojuego = PVideojuego.seleccionarPorAnoBD(ano); 
      return listVideojuego;
    }
    


}
